Warum Entwurfsmuster?

Entwurfsmuster (engl.: “Design Pattern”) sind inzwischen ein nützliches Werkzeug in der Programmierung. Allerdings sind Entwurfsmuster teilweise sehr komplex, abstrakt und schwer zu erkennen. In der Tricktresor-Rubrik Entwurfsmuster möchte ich Entwurfsmuster selbst, Anwendungshinweise, Vor- und Nachteile und alles andere, was irgendwie mit Entwurfsmustern zu tun hat, sammeln. Dass hierbei der Fokus auf SAP und ABAP liegt, ist hoffentlich selbstverständlich…?! 😉

Was ist ein Entwurfsmuster?

Entwurfsmuster sind Lösungen für definierte programmiertechnische Probleme. Ein Entwurfsmuster hat bestimmte Eigenschaften, die speziell für immer wiederkehrende Probleme in der Softwareentwicklung erdacht wurden.

Und was heißt das jetzt konkret?

Ich mag Vergleiche. Auch wenn nicht alles, was hinkt, ein Vergleich ist… Mein Vater hat mich früher immer genervt, wenn er alles bei Computern mit Autos verglichen hat. Aber selbst bei teilweise übel hinkenden Analogien kann man eine abstrakte Sache sehr  gut beschreiben.

Ich versuche das mal nicht mit Autos, sondern mit Holz. Nehmen wir an, dass Holz die Programmiersprache ist und Softwareentwicklung das Tischlerhandwerk ist. Der Tischler kann mit Holz vieles bauen, was der Kunde wünscht: Carports, Tische, Bänke, Schränke usw. Für einige Wünsche reicht die Programmiersprache “Holz” unter Umständen nicht aus: Waschbecken, Auto, Mikrowelle.

Aber bei den meisten alltäglichen Wünschen, reicht der Werkstoff Holz jedoch. Zudem weiß der Kunde meistens auch, dass er für seinen Wunsch einen Tischler (ABAP-Programmierer) bestellen muss. Damit der Tischler nicht jedes Mal neu forschen muss, wie er am besten die Beine eines Stuhles oder Tisches zusammen leimt, hat er dafür ein Entwurfsmuster gelernt. Das gibt dem Tischler die Sicherheit, dass die Beine stabil und robust sind.

Und auch die realen Gegenstände in der Welt des Tischlers sind häufig Entwurfsmuster: Stuhl, Hocker, Tisch, Apothekerschrank, Carport, … Der Vorteil hierbei ist: Jeder weiß sofort, über was gesprochen wird und was für Eigenschaften das Objekt hat. Der Kunde muss dem Tischler nicht erklären, dass er “etwas haben möchte, worauf man sitzen kann”. Weder Tischler noch Kunde müssen sich Gedanken darüber machen, ob man vielleicht eine große Kiste nehmen könnte und ob das Objekt auch eine Last von 500 kg aushalten muss und auch nicht, ob es schwimmen können muss. Die Eigenschaften sind klar und alle Beteiligten können sich über Details unterhalten. Gegebenenfalls muss das Entwurfsmuster gewechselt werden, wenn bei den Details heraus kommt, dass noch andere Eigenschaften gefordert sind, die das bisherige Entwurfsmuster nicht leisten kann. In dem Beispiel mit dem Stuhl könnte man eventuell zum Entwurfsmuster Bank wechseln.

Historie

Die Entwurfsmuster gehen zurück auf die Gang Of Four. Die vier “Bandenmitglieder” Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides haben die Entwurfsmuster zwar nicht erfunden, aber sie waren die ersten, die die Muster in einem Katalog zusammen gefasst haben. Diese Sammlung von 1995 Design Patterns. Elements Of Reusable Object-Oriented Software gehört mittlerweile zum Standardwerk in der Softwareentwicklung.

Vorteile

Zwei Vorteile von Entwurfsmustern sind bei dem Tischlerbeispiel bereits deutlich geworden:

  • Eindeutigkeit: trotzdem ein Sachverhalt komplex ist, kann er mithilfe von Entwurfsmustern einfach dargestellt und diskutiert werden
  • Erprobte Lösungen für wiederkehrende Aufgaben: Der Programmierer muss sich keine Gedanken machen, wie bestimmte Fragestellungen gelöst werden können. Er kann sich in der Werkzeugkiste Entwurfsmuster bedienen.

Weitere Vorteile sind (abhängig vom Entwurfsmuster):

  • leichte Erweiterbarkeit
  • Wartbarkeit
  • Flexibilität
  • Vor- und Nachteile eines Entwurfsmusters sind im Voraus bekannt

Nachteile

Wo Licht ist, da ist auch Schatten. Entwurfsmuster sind teilweise extrem komplex und zudem höchst abstrakt. Das bedeutet für den Programmierer, dass er sich intensiv mit dem Thema “Entwurfsmuster” beschäftigen muss. Um wirklich gut mit Entwurfsmustern arbeiten zu können, müssen diese in Fleisch und Blut übergehen. Ich bin fast versucht zu sagen, dass man dabei eine höhere Programmierer-Bewusstseinsebene erreicht… 😉

Entwurfsmuster sind schwer bis gar nicht zu erkennen. Wenn selbst ein einfaches Muster nicht durch den Namen – zum Beispiel als SINGLETON oder FACTORY – gekennzeichnet ist, ist es schwer, es als dieses zu erkennen. Da die Objekte eines Entwurfsmusters nicht zwingend zusammen hängen, sondern als einzelne Klassen durch das SAP-System geistern, ist es wichtig, dass diese erstens entsprechend gekennzeichnet und zweitens gut dokumentiert werden.

Fazit

Meines Erachtens führt für einen Entwickler, der seinen Job ernst nimmt, kein Weg mehr an Entwurfsmustern vorbei. Die Entwicklung im ABAP wird immer “Objekt lastiger”. Dementsprechend werden auch Entwurfsmuster wichtiger. Sie werden von der SAP eingesetzt und müssen vom ABAP-Entwickler benutzt werden.

Auch sind die Zeiten vorbei, in der man sich zu jedem Problem eine eigene Lösung einfallen lassen musste. Es gibt viele ständig wiederkehrende Aufgabenstellungen, bei denen der Kunde wenig Verständnis zeigen wird, wenn man hierzu eine eigene Lösung entwickeln will.

Weitere Quellen

 

Enno Wulff